//
//  UIImage+HMCircleImage.m
//  绘制图片（基于图形上下文）
//
//  Created by Mac on 15/9/5.
//  Copyright (c) 2015年 MacOC. All rights reserved.
//

#import "UIImage+HMCircleImage.h"

@implementation UIImage (HMCircleImage)


/**
 *  获得一个圆形图片，没有边框
 *
 */
+(instancetype )circleWithImageName:(NSString *)imageName
{
    //读取图片
    UIImage *image = [UIImage imageNamed:imageName];
    //获得图片的大小
    CGFloat imageW = image.size.width;
    CGFloat imageH = image.size.height;
    //获得高和宽中的最小值，当做圆的直径
    CGFloat diameter = MIN(imageW, imageH);
    CGFloat radius = diameter / 2;
    //开启一个图形上下文
    /**
     *  第一个参数绘制的范围
     *  第二个参数YES不透明，NO透明
     *  第三个参数缩放系数,如果是0.0得到的图片尺寸宽高*2
     */
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(diameter, diameter), NO, 0.0);
    //获取上下问，这里获取就是刚刚开启的上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
//    //绘制一个圆
//    CGContextAddArc(ctx, diameter/2, diameter/2, radius, 0, 2 * M_PI, 0);
    CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, diameter, diameter));
    
    //裁剪
    CGContextClip(ctx);
    //使用c
    //    //逆转矩阵
//    CGContextTranslateCTM(ctx, 0, diameter);
//    CGContextScaleCTM(ctx, 1, -1);
    //CGContextDrawImage(ctx, CGRectMake(0, 0, diameter, diameter), image.CGImage);
    //使用oc
    [image drawAsPatternInRect:CGRectMake(0, 0, diameter, diameter)];
    
    //获取新的图片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    //关闭上下文
    UIGraphicsEndImageContext();
    return newImage;
}
/**
 *  获得一个圆形图片且有边框及颜色
 */
+(instancetype )circleWithImageName:(NSString *)imageName borderWith:(CGFloat)borderWidth boderColor:(UIColor *)borderColor
{
    //
    UIImage *image = [UIImage imageNamed:@"scene"];
    
    CGFloat diameter = MIN(image.size.width, image.size.height);
    
    CGFloat smallRectW = diameter;
    CGFloat smallRectH = smallRectW;
    
    CGFloat bigRectW = smallRectW + borderWidth;
    CGFloat bigRectH = bigRectW;
    
    
    //开启图形上下文
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(bigRectW, bigRectH), NO, 0.0);
    //获取当前图形上下文，这里获取的就是刚刚开启的
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //绘制大圆
    CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, bigRectW, bigRectH));
#warning [[UIColor blackColor] set]是定义颜色对象，赋值为黑色，然后设置，如果已经有颜色对象就直接设置
    [borderColor set];
    CGContextFillPath(ctx);
    //绘制小圆
    CGContextAddEllipseInRect(ctx, CGRectMake(borderWidth * 0.5, borderWidth * 0.5, smallRectW, smallRectH));
    CGContextClip(ctx);
    
    [image drawInRect:CGRectMake(borderWidth * 0.5, borderWidth * 0.5, smallRectW, smallRectH)];
    
    CGContextStrokePath(ctx);
    //从位图上下文种获得图片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    //关闭
    UIGraphicsEndImageContext();
    return newImage;
}





@end
